home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1996 / MacHack 1996.toast / Hacks / Hacks ’95 / Reminder Manager / DoMenu.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-24  |  2.4 KB  |  139 lines  |  [TEXT/KAHL]

  1. #include "About.h"
  2. #include "Play.h"
  3. #include "Main.h"
  4. #include "DoMenu.h"
  5.  
  6. //#define TRUE        1
  7. //#define FALSE        0
  8. #define NIL            0
  9.  
  10. #define AppleMenu    1001
  11. #define AppleAbout    1
  12.  
  13. #define FileMenu      1002
  14. #define FilePlay    1
  15. #define FileStop    2
  16. #define FileQuit      4
  17.  
  18. #define EditMenu      1003
  19. #define EditUndo      1
  20. #define EditCut       3
  21. #define EditCopy      4
  22. #define EditPaste      5
  23. #define EditClear      6
  24. #define EditSelectAll 7
  25.  
  26. extern char     PlayingFlag;
  27.  
  28. void DoMenu(char *doneFlag, short theMenu, short theItem, TEHandle *theInput)
  29. {
  30. GrafPtr   SavePort;
  31. Str255    DAName;
  32. short     DNA;
  33. char      BoolHolder;
  34.  
  35.     switch (theMenu)
  36.     {
  37.         case AppleMenu:
  38.             switch (theItem)
  39.             {
  40.                 case AppleAbout:
  41.                     Open_About();
  42.                     break;
  43.                     
  44.                 default:                /* Handle the DAs */
  45.                     GetPort(&SavePort);
  46.                     GetItem(GetMHandle(AppleMenu), theItem, DAName);/* Get the name of the DA selected */
  47.                     DNA = OpenDeskAcc(DAName);
  48.                     SetPort(SavePort);
  49.                     break;
  50.              
  51.             }
  52.             break;
  53.  
  54.         case FileMenu:
  55.             switch (theItem)
  56.             {
  57.                 case FilePlay:
  58.                     Init_Play();    /* start conversion */
  59.                     break;
  60.                 case FileStop:
  61.                     Cease_Play();
  62.                     break;    
  63.                 case FileQuit:
  64.                     *doneFlag = TRUE;/* Set exit the program flag */
  65.                     break;
  66.                 default:
  67.                     break;
  68.             }
  69.             break;
  70.     
  71.     
  72.         case EditMenu:
  73.             BoolHolder = SystemEdit(theItem - 1);/* Do DA editing */
  74.             if (BoolHolder == FALSE)/* If not a DA then we get it */
  75.             {
  76.                 switch (theItem) 
  77.                 {
  78.                     default:
  79.                         break;         
  80.             }
  81.             }
  82.             break;
  83.         default:
  84.             break;     
  85. }
  86. HiliteMenu(0);
  87. }
  88.  
  89. void AdjustMenus(void)
  90. {
  91.     WindowPtr     window;
  92.     MenuHandle    menu;
  93.     long        offset;
  94.  
  95.     menu = GetMHandle(FileMenu);
  96.     if (PlayingFlag)
  97.     {
  98.         DisableItem(menu,FilePlay);
  99.         EnableItem(menu,FileStop);
  100.     }
  101.     else 
  102.     {
  103.         EnableItem(menu,FilePlay);
  104.         DisableItem(menu,FileStop);
  105.     };
  106.     
  107.     menu = GetMHandle(EditMenu);
  108.     if (IsDAWindow(FrontWindow()))
  109.     {
  110.         EnableItem(menu,EditUndo);
  111.         EnableItem(menu,EditCut);
  112.         EnableItem(menu,EditCopy);
  113.         EnableItem(menu,EditPaste);
  114.         EnableItem(menu,EditClear);
  115.         EnableItem(menu,EditSelectAll);
  116.     }
  117.     else 
  118.     {
  119.         DisableItem(menu,EditUndo);
  120.         DisableItem(menu,EditCut);
  121.         DisableItem(menu,EditCopy);
  122.         DisableItem(menu,EditPaste);
  123.         DisableItem(menu,EditClear);
  124.         DisableItem(menu,EditSelectAll);
  125.     }
  126. }
  127.  
  128. Boolean IsDAWindow(WindowPtr window)
  129. {
  130.     short windowKind;
  131.     
  132.     if (window==NIL)
  133.         return FALSE;
  134.     else {
  135.         windowKind = ((WindowPeek) window)->windowKind;
  136.         return (windowKind < 0);
  137.     }
  138. }
  139.